package cn.blnp.net.flowable.event.start.signal;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * <h3>开始事件-信号开始事件案例</h3>
 *
 * @author <a href="mailto:blnp.yibin@qq.com">lyb</a>
 * @version 1.0
 * @since 2025/5/7 14:36
 */
@Slf4j
@SpringBootTest
public class SignalEventTest {

    /**
     *  <p>
     *      信号开始事件在接收到特定的信号后被触发，发起一个流程实例。如果有多个流程含有相同信号名称的信号开始事件，那么它们都会被触发。流程定义格式如下：
     *  </p>
     *  <pre>
     *      {@code
     *          <!-- 定义信号 -->
     *          <signal id="theSignal" name="The Signal" />
     *          <process id="signalStartProcess">
     *              <!-- 定义开始节点 -->
     *              <startEvent id="signalStart" >
     *                  <!-- 包含 signalEventDefinition子元素，代表信号开始事件 -->
     *                  <signalEventDefinition signalRef="theSignal" />
     *              </startEvent>
     *              <!-- 其他元素省略 -->
     *          </process>
     *      }
     *  </pre>
     *  <p>
     *      信号theSignal和信号开始事件signalStart。其中，信号的id属性值为theSignal，开始事件通过signalEventDefinition子元素嵌入信号定义，并通过设
     *   置其signalRef属性值为theSignal引用该信号，从而构成信号开始事件。信号开始事件的触发方式通常有以下3种：
     *  </p>
     *  <ol>
     *      <li>由流程中的信号中间抛出事件抛出信号，所有订阅了该信号的信号开始事件所在的流程定义都会被启动；</li>
     *      <li>通过Flowable API（运行时服务中名称以signalEventReceived开头的方法）抛出一个信号，所有订阅了该信号的信号开始事件所在的流程定义都会被启动；</li>
     *      <li>作为普通开始事件，启动流程。</li>
     *  </ol>
     **/
    @Test
    public void test() {

    }
}
